# 方法一：分为上下两部分进行打印，一层循环，写出空格应该打印多少，星号应该打出多少，
# m=' '
# n='*'
# for i in range(1,5):
#     print((4-i) * m,(2*i-1) * n)
# for i in range(5,9):
#     print((i-4) * m,(15-2*i) * n)
#

#
# m=' '
# n='*'
# # input()接收鍵盤的输入(字符串)，参数是提示文字，python中字符可以用单引号或双引号
# v = int(input('打印的菱形高度为(奇数)：'))
# v=int(v/2)+1
# for i in range(1,v+1):
#     print((v-i) * m,(2*i-1) * n)
# for i in range(v+1,2*v+1):
#     print((i-v) * m,((2*v)*2-2+1-2*i) * n)


# 方法一：分为上下两部分进行打印
def dengyao(n):
    s = '*'
    for i in range(1, n + 1):
        # s = '*'
        print(' ' * (n - i) + s)
        s += '**'


def lingxing(n):
    dengyao(n)
    s = '*' * (2 * n - 3)
    for i in range(n, 1, -1):
        print(' ' * (n - i + 1) + s)
        s = s[0:len(s) - 2]


# 方法二：将要打印的行内容放在一个列表中打印时调出
def lingxing2(n):
    #创建一个空列表
    a = []
    # m = ' '
    # w = '*'
    #确定每一行的内容并存储到列表中
    for i in range(1, n + 1):
        # hang = ((n-i) * m, (2*i-1) * w)
        hangk=' '*(n-i)
        hangx='*'*(2*i-1)
        hang=hangk+hangx
        a.append(hang)
        #遍历并输出三角星号
    for i in a:
        print(i)
        #删除最后一行
    del a[len(a)-1]
    #逆序遍历输出下三角星号
    for s in a[::-1]:
        print(s)




dengyao(4)
lingxing(4)
lingxing2(5)